home *** CD-ROM | disk | FTP | other *** search
- ;*---------------------------------------------------------------------------
- ; :Program. newyorkwarriors.asm
- ; :Contents. Slave for "New York Warriors" from Arcadia Systems
- ; :Author. Wepl
- ; :Original v1 wepl@whdload.org
- ; v2 chris vella
- ; :Version. $Id: newyorkwarriors.asm 1.2 2001/09/23 10:04:33 wepl Exp wepl $
- ; :History. 30.08.01 started
- ; 09.09.01 support for v2 added
- ; :Requires. -
- ; :Copyright. Public Domain
- ; :Language. 68000 Assembler
- ; :Translator. Devpac 3.14, Barfly 2.9
- ; :To Do.
- ;---------------------------------------------------------------------------*
-
- INCDIR Includes:
- INCLUDE whdload.i
- INCLUDE whdmacros.i
- INCLUDE lvo/intuition.i
-
- IFD BARFLY
- OUTPUT "wart:n/newyorkwarriors/NewYorkWarriors.Slave"
- BOPT O+ ;enable optimizing
- BOPT OG+ ;enable optimizing
- BOPT ODd- ;disable mul optimizing
- BOPT ODe- ;disable mul optimizing
- BOPT w4- ;disable 64k warnings
- SUPER
- ENDC
-
- _hadr = $120
-
- ;============================================================================
-
- CHIPMEMSIZE = $100000
- FASTMEMSIZE = $0
- NUMDRIVES = 1
- WPDRIVES = %1111
-
- ;BLACKSCREEN
- ;DISKSONBOOT
- ;HRTMON
- ;MEMFREE = $100
- ;NEEDFPU
- ;SETPATCH
-
- ;============================================================================
-
- KICKSIZE = $40000 ;34.005
- BASEMEM = CHIPMEMSIZE
- EXPMEM = KICKSIZE+FASTMEMSIZE
-
- ;============================================================================
-
- _base SLAVE_HEADER ;ws_Security + ws_ID
- dc.w 13 ;ws_Version
- dc.w WHDLF_EmulTrap|WHDLF_NoError ;ws_flags
- dc.l BASEMEM ;ws_BaseMemSize
- dc.l 0 ;ws_ExecInstall
- dc.w _start-_base ;ws_GameLoader
- dc.w _data-_base ;ws_CurrentDir
- dc.w 0 ;ws_DontCache
- _keydebug dc.b 0 ;ws_keydebug
- _keyexit dc.b $59 ;ws_keyexit = F10
- _expmem dc.l EXPMEM ;ws_ExpMem
- dc.w _name-_base ;ws_name
- dc.w _copy-_base ;ws_copy
- dc.w _info-_base ;ws_info
-
- ;============================================================================
-
- IFD BARFLY
- DOSCMD "WDate >T:date"
- ENDC
-
- _name dc.b "New York Warriors",0
- _copy dc.b "1990 Arcadia Systems",0
- _info dc.b "adapted by Wepl",10
- dc.b "Version 1.0 "
- IFD BARFLY
- INCBIN "T:date"
- ENDC
- dc.b 0
- _data dc.b "data",0
- _main dc.b "z",0
- _highs dc.b "highs",0
- _intname dc.b "intuition.library",0
- EVEN
-
- ;============================================================================
- _start ; A0 = resident loader
- ;============================================================================
-
- IFEQ 1
- sub.l #$1000,a7
- move.l a0,a2
- lea _ny,a0
- lea $1000,a1
- jsr (resload_LoadFileDecrunch,a2)
- lea $1000,a0
- sub.l a1,a1
- jsr (resload_Relocate,a2)
- mc68020
- movec vbr,a0
- lea _trace,a1
- move.l a1,$24(a0)
- move #$a700,sr
- jmp $104e
-
- _trace ;cmp.w #-1,d7
- ;beq _ill
- cmp.l #$1126,(2,a7)
- beq _f1
- cmp.l #$1148,(2,a7)
- beq _ill
- nop
- rte
- _f1 move.l d2,d3
- add.l #2,(2,a7)
- rte
- _ill illegal
-
- _ny dc.b "newyork",0
- ;END
- ENDC
-
- ;initialize kickstart and environment
- bra _boot
-
- _bootearly move.l (_resload,pc),a2 ;a2 = resload
- move.l (4),a6 ;a6 = execbase
-
- ;enable cache
- ; move.l #WCPUF_Base_NC|WCPUF_Exp_NC|WCPUF_Slave_CB|WCPUF_IC|WCPUF_DC|WCPUF_BC|WCPUF_SS|WCPUF_SB|WCPUF_NWA,d0
- move.l #0,d0
- move.l #WCPUF_All,d1
- jsr (resload_SetCPU,a2)
-
- lea _intname,a1
- jsr (_LVOOldOpenLibrary,a6)
- move.l d0,a6
- lea _newscreen,a0
- jsr (_LVOOpenScreen,a6)
- move.l (4),a6
-
- move.l #54200,d0
- moveq #MEMF_CHIP,d1
- jsr (_LVOAllocMem,a6)
- move.l d0,a5 ;a5 = main
-
- lea (_main),a0
- move.l a5,a1
- jsr (resload_LoadFileDecrunch,a2)
-
- move.l a5,a0
- sub.l a1,a1
- jsr (resload_Relocate,a2)
-
- move.l a5,a0
- jsr (resload_CRC16,a2)
- lea _pl1,a0
- lea $af94,a1
- lea _go1,a4
- cmp.w #$7be1,d0
- beq .ok
- lea _pl2,a0
- lea $bbd8,a1
- lea (a5),a4
- cmp.w #$eb65,d0
- beq .ok
- pea TDREASON_WRONGVER
- jmp (resload_Abort,a2)
-
- .ok add.l a5,a1
- move.l a1,_hadr
- move.l a5,a1
- jsr (resload_Patch,a2)
-
- lea _highs,a0
- jsr (resload_GetFileSize,a2)
- tst.l d0
- beq .nohighs
- lea _highs,a0
- move.l _hadr,a1
- jsr (resload_LoadFileDecrunch,a2)
- bsr _crypt
- .nohighs
- clr.l -(a7)
- pea (a5)
- pea WHDLTAG_DBGADR_SET
- move.l a7,a0
- jsr (resload_Control,a2)
-
- sub.l a0,a0 ;cli argument string
- jsr (a4)
- illegal
-
- _go1 move.w #0,d0 ;start level? but does not work...
- move.l a5,a4
- add.l #$ab0c+$7ffe,a4
- jmp ($2c2,a5)
-
- _pl1 PL_START
- PL_S $d26,$32-$26 ;open doslib
- PL_PS $30,_load1
- PL_PS $4a,_load2
- PL_S $82ce,$dc-$ce
- PL_P $82e0,_load3
- PL_R $6282 ;insert disk 2
- PL_PS $1654,_loadseg
- PL_PS $17da,_unloadseg
- PL_P $82f8,_open
- PL_P $8310,_seek
- PL_P $8328,_read
- PL_P $8340,_close
- PL_PS $1e06,_f1
- PL_S $cae,$cc6-$cae ;cia accesses
- PL_PS $5842,_b1
- PL_P $6abe,_saveh
- PL_PS $574a,_b2
- PL_PS $169c,_f2
- PL_END
-
- _pl2 PL_START
- PL_S $78,$90-$78
- PL_PS $9a,_load4
- PL_S $124,2
- PL_S $128,$140-$128
- PL_PS $144,_load4
- PL_S $15c,$162-$15c
- PL_S $f5c,$32-$26 ;open doslib
- ; PL_PS $192e,_loadseg2
- ; PL_PS $1976,_f2
- ; PL_PS $1ab4,_unloadseg
- ;PL_PS $210a,_f1
- ; PL_PS $6180,_b2
- ;PL_PS $63f8,_b1
- ; PL_R $6e82 ;insert disk 2
- ; PL_P $76fc,_saveh
- ;PL_S $82ce,$dc-$ce
- ;PL_P $82e0,_load3
- ; PL_P $8f10,_open
- ; PL_P $8f28,_seek
- ; PL_P $8f40,_read
- ; PL_P $8f58,_close
- PL_END
-
- _load4 move.l a2,-(a7)
- move.l d2,a1
- move.l _resload,a2
- jsr (resload_LoadFileDecrunch,a2)
- move.l (a7)+,a2
- addq.l #4,(a7)
- rts
-
- _f2 subq.w #1,d0
- .lp move.w (a1)+,(a0)+
- dbf d0,.lp
- rts
-
- _saveh bsr _crypt
- move.l #$b00c-$af94,d0
- lea _highs,a0
- move.l _hadr,a1
- move.l _resload,a2
- jsr (resload_SaveFile,a2)
- bsr _crypt
- movem.l (a7)+,d2-d7/a2-a3/a5
- rts
-
- _crypt movem.l d0/a1,-(a7)
- move.l _hadr,a1
- move.l #$b00c-$af94-1,d0
- .lp eor.b d0,(a1)+
- dbf d0,.lp
- movem.l (a7)+,d0/a1
- rts
-
- _b2 move.l (a0)+,d2
- and.l #$fffff,d2
- move.l d2,(bltbpt,a3)
- move.l (a0)+,(bltcpt,a3)
- add.l #2,(a7)
- rts
-
- _b1 BLITWAIT
- move.l a1,(a5)
- move.l d1,(a3)
- rts
-
- _f1 cmp.l #0,a5
- bne .ok
- .1 add.l #$1e64-$1e06-6,(a7)
- rts
- .ok cmp.l (-4,a5),a3
- bne .1
- rts
-
- _open movem.l d1/a6,-(a7)
- move.l 4,a6
- moveq #8,d0
- moveq #0,d1
- jsr (_LVOAllocMem,a6)
- move.l d0,a0
- clr.l (a0)+
- move.l (a7)+,(a0)
- move.l (a7)+,a6
- rts
- _seek move.l d1,a0
- move.l (a0),d0
- tst.w d3
- beq .cur
- cmp.w #1,d3
- beq .end
- .beg move.l d2,(a0)
- rts
- .cur add.l d2,(a0)
- rts
- .end movem.l d0-d1/a0,-(a7)
- move.l d2,(a0)+
- move.l (a0),a0
- move.l _resload,a1
- jsr (resload_GetFileSize,a1)
- move.l (8,a7),a0
- add.l d0,(a0)
- movem.l (a7)+,d0-d1/a0
- rts
- _read move.l d1,a1
- movem.l d1/a1-a2,-(a7)
- move.l (a1)+,d1 ;offset
- move.l (a1),a0 ;filename
- move.l d2,a1 ;buffer
- move.l d3,d0 ;length
- move.l _resload,a2
- jsr (resload_LoadFileOffset,a2)
- movem.l (a7)+,d1/a1-a2
- add.l d3,(a1)
- move.l d3,d0
- rts
- _close move.l a6,-(a7)
- move.l d1,a1
- move.l #8,d0
- move.l 4,a6
- jsr (_LVOFreeMem,a6)
- move.l (a7)+,a6
- rts
-
- _load1 move.l d1,a1 ;filename
- rts
- _load2 move.l a2,-(a7)
- move.l _resload,a2
- move.l a1,a0
- move.l d2,a1
- jsr (resload_LoadFileDecrunch,a2)
- move.l d0,d2
- move.l (a7)+,a2
- add.l #6,(a7)
- rts
- _load3 move.l _resload,a2
- move.l d2,a1
- jsr (resload_LoadFileDecrunch,a2)
- move.l d0,d1
- movem.l (a7)+,d2-d4/a2
- rts
-
- _loadseg2 addq.l #5,a0 ;skip "NYW2:"
- _loadseg move.l a0,-(a7)
- move.l #16508,d0 ;max len of 'object?'
- move.l d0,-(a7)
- moveq #0,d1
- move.l (4),a6
- jsr (_LVOAllocMem,a6)
- move.l d0,a2
- move.l (a7)+,(a2)
- move.l (a7)+,a0
- lea (4,a2),a1
- move.l _resload,a6
- jsr (resload_LoadFileDecrunch,a6)
- lea (4,a2),a0
- sub.l a1,a1
- jsr (resload_Relocate,a6)
- move.l a2,d0
- lsr.l #2,d0
- rts
- _unloadseg lsl.l #2,d1
- move.l d1,a1
- move.l (a1),d0
- move.l (4),a6
- jsr (_LVOFreeMem,a6)
- addq.l #2,(a7)
- rts
-
- _newscreen dc.w 0 ;LeftEdge
- dc.w 0 ;TopEdge
- dc.w 320 ;Width
- dc.w -1 ;Height
- dc.w 1 ;Depth
- dc.b 0,0 ;DetailPen,BlockPen
- dc.w 0 ;ViewModes
- dc.w $10f ;Type
- dc.l 0 ;Font
- dc.l 0 ;Title
- dc.l 0 ;Gadgets
- dc.l 0 ;CustomBitmap
-
- ;============================================================================
-
- INCLUDE Sources:whdload/kick13.s
-
- ;============================================================================
-
- END
-